home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 19
/
Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso
/
Aminet
/
gfx
/
board
/
rtgmaster.lha
/
libs
/
rtgc2p
/
GD.asm
< prev
Wrap
Assembly Source File
|
1996-10-18
|
13KB
|
522 lines
incdir "include:"
include "rtgmaster/rtgc2p.i"
include "rtgmaster/rtgmaster.i"
include "rtgmaster/rtgsublibs.i"
include "rtgmaster/rtgAMI.i"
include "intuition/screens.i"
include "exec/memory.i"
moveq #0,d0
rts
.s dc.l "c2p!"
dc.l .s
dc.l 1
dc.l Structure
Structure
dc.w CI_256+CI_128+CI_64+CI_EHB+CI_32+CI_16+CI_8+CI_4+CI_2
dc.w CI_68060D+CI_68040+CI_68030D+CI_68020
dc.w 0
dc.b 0
dc.b 0
dc.l c2p_1x1
dc.w 32
dc.w 2
dc.w CI_Smaller
dc.b 'AMI '
dc.l Name
dc.l Init
dc.l Expunge
dc.l chunky2planar
dc.l chunky2planarI
dc.l 0
dc.l 0
dc.b 0
dc.b 0,0,0 ; Test
even
Init:
movem.l a0/a1/a6/d0/d1,-(sp)
move.l #0,rs_c2pdata(a0)
movem.l (sp)+,a0/a1/a6/d0/d1
move.l #0,d0
rts
Error:
Name: dc.b 'c2p for 020 (Noninterl.+Interl.)',0
even
Expunge:
rts
chunky2planarI:
movem.l d0/d2/d3/d4/a3/d7,-(sp)
move.l #0,d7
cmp.l #c2p_1x1,d0
beq .OK
cmp.l #c2p_Best,d0
beq .OK
cmp.l #c2p_BestD,d0
beq .OK
cmp.l #c2p_Fastest,d0
beq .OK
cmp.l #c2p_FastestD,d0
beq .OK
cmp.l #c2p_Selected,d0
beq .Selected
cmp.l #c2p_SelectedD,d0
beq .Selected
move.l #c2p_warn_Wrong_Pixelmode,d7
bra .OK
.Selected:
move.l rs_c2pcurr(a3),d3
cmp.l #c2p_1x1,d3
beq .OK
move.l #c2p_warn_Wrong_Pixelmode,d7
bra .OK
.OK:
sub.l d0,d0
sub.l d1,d1
move.l rsAMI_ScreenHandle(a3),a3
move.w sc_Width(a3),d0
move.w sc_Height(a3),d1
move.l d1,d2
mulu d0,d2
lsr.l #3,d2
move.l d0,d3
lsr.l #3,d3
add.w (a4)+,a1
move.w (a4)+,d4
mulu d0,d4
lsr.l #3,d4
add.w d4,a1
.w:
move.w (a4)+,d0
move.w (a4),d1
cmp.l #1,.Merk
beq c2p
move.l #1,.Merk
move.l a3,-(sp)
move.l rsAMI_ScreenHandle(a3),a3
;move.w sc_Width(a3),d0
;move.w sc_Height(a3),d1
move.l (sp)+,a3
lea rsAMI_Bitmap1(a3),a3
sub.l d3,d3
bra c2p
move.l a3,-(sp)
bra .Mistake
.Merk: dc.l 0
.Merk2: dc.l 0
.Mistake:
move.l (sp)+,a3
move.l #1,.Merk2
movem.l (sp)+,d0/d2/d3/d4/a3/a7
move.l d7,d0
movem.l d2/a6,-(sp)
move.l $4,a6
move.l #0,a1
jsr -294(a6)
move.l d0,a1
movem.l (sp)+,d0/a6
move.l a6,-(sp)
move.l $4,a6
move.l d0,d1
sub.l d0,d0
bset d1,d0
jsr -324(a6)
move.l (sp)+,a6
move.l #c2p_err_internal,d0
rts
chunky2planar:
movem.l d0/d2/d3/d4/a3/d7,-(sp)
move.l #0,d7
cmp.l #c2p_1x1,d0
beq .OK
cmp.l #c2p_Best,d0
beq .OK
cmp.l #c2p_BestD,d0
beq .OK
cmp.l #c2p_Fastest,d0
beq .OK
cmp.l #c2p_FastestD,d0
beq .OK
cmp.l #c2p_Selected,d0
beq .Selected
cmp.l #c2p_SelectedD,d0
beq .Selected
move.l #c2p_warn_Wrong_Pixelmode,d7
bra .OK
.Selected:
move.l rs_c2pcurr(a3),d3
cmp.l #c2p_1x1,d3
beq .OK
move.l #c2p_warn_Wrong_Pixelmode,d7
bra .OK
.OK:
sub.l d0,d0
sub.l d1,d1
move.l rsAMI_ScreenHandle(a3),a3
move.w sc_Width(a3),d0
move.w sc_Height(a3),d1
move.l d1,d2
mulu d0,d2
lsr.l #3,d2
move.l d0,d3
lsr.l #3,d3
;tst.l (a4)+
sub.l d4,d4
add.w (a4)+,a1
move.w (a4)+,d4
mulu d0,d4
lsr.l #3,d4
add.w d4,a1
.w:
move.w (a4)+,d0
move.w (a4),d1
cmp.l #1,.Merk
beq c2p
move.l #1,.Merk
move.l a3,-(sp)
move.l rsAMI_ScreenHandle(a3),a3
;move.w sc_Width(a3),d0
;move.w sc_Height(a3),d1
move.l (sp)+,a3
lea rsAMI_Bitmap1(a3),a3
bra c2p
move.l a3,-(sp)
bra .Mistake
.Merk: dc.l 0
.Merk2: dc.l 0
.Mistake:
move.l (sp)+,a3
move.l #1,.Merk2
movem.l (sp)+,d0/d2/d3/d4/a3/a7
move.l d7,d0
movem.l d2/a6,-(sp)
move.l $4,a6
move.l #0,a1
jsr -294(a6)
move.l d0,a1
movem.l (sp)+,d0/a6
move.l a6,-(sp)
move.l $4,a6
move.l d0,d1
sub.l d0,d0
bset d1,d0
jsr -324(a6)
move.l (sp)+,a6
move.l #c2p_err_internal,d0
rts
width equ 320 ; must be multiple of 32
height equ 200
plsiz equ (width/8)*height
c2p:
_chunky2planar:
;a0 = chunky buffer
;a1 = first bitplane
movem.l d2-d7/a2-a6,-(sp)
exit
movea.l d2,a5
lsl.l #3,d2
sub.l a5,d2
subq.l #2,d2
movea.l d2,a6
lsr.w #4,d0
ext.l d0
move.l d0,d4
subq.l #1,d4
move.l d4,-(sp)
add.l d0,d0
sub.l d0,d3
sub.l a6,d3
move.l d3,-(sp)
move.w d1,d7
subq.w #1,d7
movea.l #$f0f0f0f0,a2
movea.l #$cccccccc,a3
movea.l #$aaaa5555,a4
move.l a2,d6
swap d7
move.w (6,sp),d7
move.l (a0)+,d0
move.l (a0)+,d1
move.l (a0)+,d2
move.l (a0)+,d3
move.l d0,d4
and.l d6,d0
eor.l d0,d4
lsl.l #4,d4
bra.w same_from_here
cnop 0,4
outerloop swap d7
move.w (6,sp),d7
move.w d5,(a1)
adda.l a5,a1
swap d5
move.w d5,(a1)
adda.l (sp),a1
movem.l (a0)+,d0-d3
move.l d0,d5
swap d0
rol.l #8,d2
move.w d0,d4
move.b d2,d4
swap d4
swap d2
move.w d2,d4
move.b d0,d4
ror.w #8,d4
move.b d2,d5
swap d5
swap d2
move.w d2,d5
swap d0
move.b d0,d5
ror.w #8,d5
move.l d1,d2
swap d1
rol.l #8,d3
move.w d1,d0
move.b d3,d0
swap d0
swap d3
move.w d3,d0
move.b d1,d0
ror.w #8,d0
move.b d3,d2
swap d2
swap d3
move.w d3,d2
swap d1
move.b d1,d2
ror.w #8,d2
move.l d2,d3
move.l d0,d2
move.l d4,d0
move.l d5,d1
move.l d0,d4
and.l d6,d0
eor.l d0,d4
lsl.l #4,d4
bra.b same_from_here
innerloop
move.w d5,(a1)
adda.l a5,a1
swap d5
move.w d5,(a1)
suba.l a6,a1
move.l (a0)+,d0
move.l d0,d5
move.l (a0)+,d1
swap d0
move.l (a0)+,d2
rol.l #8,d2
move.w d0,d4
move.b d2,d4
swap d4
swap d2
move.w d2,d4
move.b d0,d4
ror.w #8,d4
move.b d2,d5
swap d5
swap d2
move.w d2,d5
swap d0
move.b d0,d5
ror.w #8,d5
move.l d1,d2
swap d1
move.l (a0)+,d3
rol.l #8,d3
move.w d1,d0
move.b d3,d0
swap d0
swap d3
move.w d3,d0
move.b d1,d0
ror.w #8,d0
move.b d3,d2
swap d2
swap d3
move.w d3,d2
swap d1
move.b d1,d2
ror.w #8,d2
move.l d2,d3
move.l d0,d2
move.l d4,d0
move.l d5,d1
; move.l d0,d4
and.l d6,d0
eor.l d0,d4
lsl.l #4,d4
same_from_here move.l d2,d5
and.l d6,d5
eor.l d5,d2
lsr.l #4,d5
or.l d5,d0
or.l d4,d2
move.l d1,d4
and.l d6,d1
eor.l d1,d4
move.l d3,d5
and.l d6,d5
eor.l d5,d3
lsr.l #4,d5
lsl.l #4,d4
or.l d5,d1
or.l d4,d3
move.l a3,d6
move.l d2,d4
and.l d6,d2
eor.l d2,d4
move.l d3,d5
and.l d6,d5
eor.l d5,d3
lsl.l #2,d4
or.l d4,d3
move.l a4,d6
move.l d3,d4
and.l d6,d3
eor.l d3,d4
lsr.w #1,d4
swap d4
add.w d4,d4
or.l d4,d3
move.w d3,(a1)
adda.l a5,a1
lsr.l #2,d5
or.l d5,d2
move.l d2,d4
and.l d6,d2
eor.l d2,d4
lsr.w #1,d4
swap d3
move.w d3,(a1)
adda.l a5,a1
swap d4
add.w d4,d4
or.l d4,d2
move.l a3,d6
move.l d0,d4
and.l d6,d0
eor.l d0,d4
move.w d2,(a1)
adda.l a5,a1
move.l d1,d5
and.l d6,d5
eor.l d5,d1
lsl.l #2,d4
or.l d4,d1
move.l a4,d6
swap d2
move.w d2,(a1)
adda.l a5,a1
move.l d1,d4
and.l d6,d1
eor.l d1,d4
lsr.w #1,d4
swap d4
add.w d4,d4
or.l d4,d1
move.w d1,(a1)
adda.l a5,a1
lsr.l #2,d5
or.l d5,d0
move.l d0,d5
and.l d6,d0
eor.l d0,d5
swap d1
move.w d1,(a1)
adda.l a5,a1
lsr.w #1,d5
swap d5
add.w d5,d5
or.l d0,d5
move.l a2,d6
dbra d7,innerloop
swap d7
dbra d7,outerloop
move.w d5,(a1)
adda.l a5,a1
swap d5
move.w d5,(a1)
addq.l #8,sp
movem.l (sp)+,d2-d7/a2-a6
Raus:
move.l d7,d0
movem.l (sp)+,d0/d2/d3/d4/a3/d7
movem.l d2/a6,-(sp)
move.l $4,a6
move.l #0,a1
jsr -294(a6)
move.l d0,a1
movem.l (sp)+,d0/a6
move.l a6,-(sp)
move.l $4,a6
move.l d0,d1
sub.l d0,d0
bset d1,d0
jsr -324(a6)
move.l (sp)+,a6
move.l #0,d0
rts
cnop 0,4
END